import axios from "axios";
// 定义一个常量来保存统一的url
const  baseUrl = "http://localhost:8080";
/**
 * home组件中请求数据的对象
 * @type {{}}
 */
const projectRequest={



    /**
     * 删除指定项目
     * @param projectId 项目ID
     * @param callBack 回调函数，接收删除结果
     */
    async deleteProject(projectId, callBack) {
        try {
            // 构造请求URL
            const url = `${baseUrl}/project/delete/${projectId}`;

            // 发送PUT请求
            const response = await axios.put(url);

            // 调用回调函数，并传递响应数据
            callBack(response.data);
        } catch (error) {
            // 处理错误
            console.error("删除项目失败", error);
            callBack(null, error); // 回调函数传递错误信息
        }
    },

    /**
     * 加载所有的菜单,我们这里准备异步请求，需要一个回调函数
     * @param project 对象，用来封装查询条件
     * @param page 页码，默认是1
     * @param limit 每页大小，默认10
     * @param callBack 回调函数
     */
    loadProjects(project,page=1,limit=10,callBack){
        let url = baseUrl + "/project/list?page="+page + "&limit="+limit;
        if(project){
            if(project.projectName){
                url += "&projectName=" + project.projectName;
            }
            if(project.startTimeBegin){
                url += "&startTimeBegin="+project.startTimeBegin;
            }
            if(project.startTimeEnd){
                url += "&startTimeEnd="+project.startTimeEnd;
            }
            if(project.endTimeBegin){
                url += "&endTimeBegin="+project.endTimeBegin;
            }
            if(project.endTimeEnd){
                url += "&endTimeEnd="+project.endTimeEnd;
            }
            if(project.projectStatus){
                url += "&projectStatus="+project.projectStatus;
            }
            if (project.userId){
                url += "&userId=" + project.userId;
            }
        }
        // 发送请求
        axios.get(url)
            .then(res=>{
                // 回调函数是从外面传入的，我们要将我们请求得到的结果传回到回调函数中.
                // 由于axios会对结果进行一个封装，所以我们这里传入回调函数的数据直接就是res.data
                // 我们在外面获取的数据就是我们后端响应的数据本身。
                callBack(res.data);
            })
    },
    loadDeleteProjects(project,page=1,limit=10,callBack) {
        let url = baseUrl + "/project/list/del?page=" + page + "&limit=" + limit;
        if (project) {
            if (project.projectName) {
                url += "&projectName=" + project.projectName;
            }
            if (project.startTimeBegin) {
                url += "&startTimeBegin=" + project.startTimeBegin;
            }
            if (project.startTimeEnd) {
                url += "&startTimeEnd=" + project.startTimeEnd;
            }
            if (project.endTimeBegin) {
                url += "&endTimeBegin=" + project.endTimeBegin;
            }
            if (project.endTimeEnd) {
                url += "&endTimeEnd=" + project.endTimeEnd;
            }
            if (project.projectStatus) {
                url += "&projectStatus=" + project.projectStatus;
            }
            if (project.userId) {
                url += "&userId=" + project.userId;
            }
        }
        // 发送请求
        axios.get(url)
            .then(res=>{
                // 回调函数是从外面传入的，我们要将我们请求得到的结果传回到回调函数中.
                // 由于axios会对结果进行一个封装，所以我们这里传入回调函数的数据直接就是res.data
                // 我们在外面获取的数据就是我们后端响应的数据本身。
                callBack(res.data);
            })
    },
    getProjectById(projectId,callBack){
        axios.get(baseUrl + "/project/list/get?projectId=" + projectId)
            .then(res =>{
                callBack(res.data)
            })
    },
    sumOfTask(projectId,callBack){
        axios.get(baseUrl + "/project/sum/task?projectId=" + projectId)
            .then(res =>{
                callBack(res.data)
            })
    }
}
// 将projectRequest暴露出去
export default projectRequest;